#!@GENTOO_PORTAGE_EPREFIX@/bin/bash
#
# Utility to update Gentoo TeXLive distribution configuration files
#

echo "Configuring TeXLive ..."

PATH="@GENTOO_PORTAGE_EPREFIX@"/bin:"@GENTOO_PORTAGE_EPREFIX@"/usr/bin

# Fix for all those with altered umask for root
umask 022

# Ensure reliable order when concatenating files, bug #579018
LC_COLLATE=C

# Make sure we have a correct environment, bug #30432
# The list of env. vars is taken from the INSTALL file
for texvar in AFMFONTS BIBINPUTS BSTINPUTS DVILJFONTS DVIPSFONTS \
	DVIPSHEADERS GFFONTS GLYPHFONTS INDEXSTYLE MFBASES MFINPUTS \
	MFPOOL MFTINPUTS MPINPUTS MPMEMS MPPOOL MPSUPPORT OCPINPUTS \
	OFMFONTS OPLFONTS OTPINPUTS OVFFONTS OVPFONTS PKFONTS PSHEADERS \
	T1FONTS T1INPUTS TEXBIB TEXCONFIG TEXDOCS TEXFONTMAPS TEXFONTS \
	TEXFORMATS TEXINDEXSTYLE TEXINPUTS TEXMFCNF TEXMFDBS TEXMFINI \
	TEXPICTS TEXPKS TEXPOOL TEXPSHEADERS TEXSOURCES TFMFONTS TRFONTS \
	VFFONTS XDVIFONTS XDVIVFS ; do

	if [ "${!texvar}" ]; then
		if ! $(echo ${!texvar} | grep '^:\|::\|:$' &>/dev/null) ; then
			export ${texvar}="${!texvar}:"
		fi
	fi
done

if [ "$TEXINPUTS" ]; then
	if $(echo ${TEXINPUTS} | grep '@GENTOO_PORTAGE_EPREFIX@/usr/share/texmf' &>/dev/null) ; then
		export TEXINPUTS=$(echo ${TEXINPUTS} | sed -e 's|@GENTOO_PORTAGE_EPREFIX@/usr/share/texmf/*:\?||g')
	elif $(echo ${TEXINPUTS} | grep '@GENTOO_PORTAGE_EPREFIX@/var/lib/texmf' &>/dev/null) ; then
		export TEXINPUTS=$(echo ${TEXINPUTS} | sed -e 's|@GENTOO_PORTAGE_EPREFIX@/var/lib/texmf/*:\?||g')
	fi
fi

MKTEMP_COMMAND="mktemp -t tmp.XXXXXXXXXX"
DIFF_COMMAND="cmp -s"
TEMP_FILE="`${MKTEMP_COMMAND}`"

if [ -z "${TEMP_FILE}" ]; then
    exit
fi

# check whether config files for fmtutil and updmap have changed
STATUS_FMTUTIL="0"
STATUS_UPDMAP="0"

if [ -d "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/texmf.d ]; then
    echo "Generating @GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/texmf.cnf from @GENTOO_PORTAGE_EPREFIX@/etc/texmf/texmf.d ..."
    cat "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/texmf.d/*.cnf > "@GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/texmf.cnf"
fi

if [ -d "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/fmtutil.d ]; then
    echo "Generating @GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/fmtutil.cnf from @GENTOO_PORTAGE_EPREFIX@/etc/texmf/fmtutil.d ..."
    if [ -f "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/fmtutil.cnf ]; then
	cp -f "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/fmtutil.cnf ${TEMP_FILE}
    else
	touch ${TEMP_FILE}
    fi
    cat "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/fmtutil.d/*.cnf > "@GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/fmtutil.cnf"
    ${DIFF_COMMAND} "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/fmtutil.cnf ${TEMP_FILE}
    STATUS_FMTUTIL="${STATUS_FMTUTIL}$?"
else
# if no regeneration took place:
# always regenerate the formats to be on the safe side
    STATUS_FMTUTIL="${STATUS_FMTUTIL}3"
fi

if [ -d "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/updmap.d ]; then
    if [ -f "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/updmap.cfg ]; then
	cp -f "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/updmap.cfg ${TEMP_FILE}
    else
	touch ${TEMP_FILE}
    fi
    echo "Generating @GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/updmap.cfg from @GENTOO_PORTAGE_EPREFIX@/etc/texmf/updmap.d ..."
    cat "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/updmap.d/*.cfg > "@GENTOO_PORTAGE_EPREFIX@/etc/texmf/web2c/updmap.cfg"
    ${DIFF_COMMAND} "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/web2c/updmap.cfg ${TEMP_FILE}
    STATUS_UPDMAP="${STATUS_UPDMAP}$?"
else
# if no regeneration could be done:
# always regenerate the maps to be on the safe side
    STATUS_UPDMAP="${STATUS_UPDMAP}3"
fi

echo "Generating ls-R files"
mktexlsr &>/dev/null

# Generate language.dat file, from texlive install-pkg.sh
X=`kpsewhich language.dat`
Z=`dirname $X`
if [ -n "$X" -a -f "$Z/language.dat" -a -f "$Z/language.us" ] ; then
    echo "Generating language.dat file"

    # Save the old one, we will check if it has changed
    cp -f "$Z/language.dat" "${TEMP_FILE}"

    cat "$Z/language.us" > "$Z/language.dat"
    for i in "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/language.dat.d/language.*.dat; do
            [ -f "$i" ] && cat "$i" >> "$Z/language.dat"
    done

    ${DIFF_COMMAND} "$Z/language.dat" "${TEMP_FILE}"
    STATUS_FMTUTIL="${STATUS_FMTUTIL}$?"
fi

# Generate language.def file.
if [ -n "$X" -a -f "$Z/language.def" -a -f "$Z/language.us.def" ] ; then
    echo "Generating language.def file"

    # Save the old one, we will check if it has changed
    cp -f "$Z/language.def" "${TEMP_FILE}"

    cat "$Z/language.us.def" > "$Z/language.def"
    for i in "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/language.def.d/language.*.def; do
            [ -f "$i" ] && cat "$i" >> "$Z/language.def"
    done
    cat << EOF >> "$Z/language.def"
%%% No changes may be made beyond this point.

\uselanguage {USenglish}             %%% This MUST be the last line of the file.
EOF

    ${DIFF_COMMAND} "$Z/language.def" "${TEMP_FILE}"
    STATUS_FMTUTIL="${STATUS_FMTUTIL}$?"
fi

# Generate language.dat.lua file.
if [ -n "$X" -a -f "$Z/language.dat.lua" -a -f "$Z/language.us.lua" ] ; then
    echo "Generating language.dat.lua file"

    # Save the old one, we will check if it has changed
    cp -f "$Z/language.dat.lua" "${TEMP_FILE}"

    cat "$Z/language.us.lua" > "$Z/language.dat.lua"
    for i in "@GENTOO_PORTAGE_EPREFIX@"/etc/texmf/language.dat.lua.d/language.*.dat.lua; do
            [ -f "$i" ] && cat "$i" >> "$Z/language.dat.lua"
    done
    printf "}\n" >> "$Z/language.dat.lua"

    ${DIFF_COMMAND} "$Z/language.dat.lua" "${TEMP_FILE}"
    STATUS_FMTUTIL="${STATUS_FMTUTIL}$?"
fi

if [ "${STATUS_FMTUTIL}" -ne 0 ] ; then
    echo "Generating format files ..."
    fmtutil-sys --all &>/dev/null
else
    echo "Skipping format files, since they are unchanged"
fi

if [ "${STATUS_UPDMAP}" -ne 0 ] ; then
    echo "Generating font maps..."
    updmap-sys &>/dev/null
else
    echo "Skipping font maps, since they are unchanged"
fi

rm -f ${TEMP_FILE}

echo
echo "Use 'texconfig font ro'(rw) to disable (enable) font generation for users"
echo
